/*
 * Miya.com Inc.
 * Copyright (c) 2004-2017 All Rights Reserved.
 */
package com.miya.erpmofa.common.lang.result;

import lombok.Data;
import org.apache.commons.lang.builder.ReflectionToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;

import java.io.Serializable;


/**
 * 范型Result结果类
 *
 * @author ${guanzhong}
 * @version $Id: Result.java, v 0.1 2017-12-27 下午6:15 Exp $
 */
@Data
@SuppressWarnings("unused")
public class Result<T> implements Serializable {


    private static final long serialVersionUID = -2351762963694974992L;
    /**
     * 业务是否成功
     */
    private boolean success;

    /**
     * 签名,详见文档
     */
    private String sign;

    /**
     * 错误码，参见具体的API接口文档
     */
    private String err_code;

    /**
     * 错误描述，参见具体的API接口文档
     */
    private String err_msg;

    /**
     * 对象实例
     */
    private T resultObj;

    /**
     * 构造函数
     */
    public Result() {
    }

    /**
     * 构造函数
     *
     * @param success   是否成功
     * @param err_code  业务返回码
     * @param err_msg   业务返回码描述
     * @param resultObj 对象实例
     */
    public Result(final boolean success, final String err_code, final String err_msg, final T resultObj) {
        this.success = success;
        this.err_code = err_code;
        this.err_msg = err_msg;
        this.resultObj = resultObj;
    }

    /**
     * 必须是ToStringStyle.SHORT_PREFIX_STYLE 形式如下:</br>
     * Person[name=John Doe,age=33,smoker=false]</br>
     *
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString() {
        return ReflectionToStringBuilder.toString(this, ToStringStyle.SHORT_PREFIX_STYLE);
    }
}
